﻿using DX.ViewModels;
using DX.Views;
using System;
using System.Diagnostics.CodeAnalysis;

namespace DX
{
    public interface IRouterFactory
    {
        MvvmOption Option { get; }
        object GetView(Type viewModelType, string viewCode = null);

        void ApplyGuardClose([NotNull] IViewModel viewModel, [NotNull] IView view);
        object FindView(Type viewModelType);
    }
    public interface IUrlRoutFactory: IRouterFactory
    {

    }

    public interface IFormRoutFactory: IRouterFactory
    {
        void ShowDialog(Type viewModelType, string viewCode = null);

        void Show(Type viewModelType, string viewCode = null);
        void FindViewShow(Type viewModelType, string viewCode = null);
    }
}